#ifndef _KLAS_TEXTURED_NODE_HPP_
#define _KLAS_TEXTURED_NODE_HPP_

#include "../include/Node.hpp"
#include "../include/Texture.hpp"

namespace klas
{
	//! The TexturedNode renders textures.
	class TexturedNode : public Node
	{
		public:
			
			//! Ctor.
			TexturedNode();
			
			//! Ctor.
      /*! \param texture A Texture* to the texture of the node. */
      TexturedNode(DataObject* tex);
			
			//! Dtor.
			virtual ~TexturedNode();
			
			//! Gets a deep copy of the node.
			/*! \return A deep copy of the node.  You have to call delete on the new node. */
			virtual TexturedNode* getDeepCopy();
			
			//! Sets the texture of the node.
      /*! \param tex A Texture* to the texture. */
      void setTexture(DataObject* tex);

      //! Gets what type of this node is.  IE: Texture, Primitive, etc.
      /*! \return The type of the node. */
      virtual iReal getNodeType() const;
			
			//! Renders the node.
			virtual void render(const Rectangle<Real>& camera);
			
		private:
			
			//! The node's texture.
			Texture* m_tex;
			
	};
}

#endif
